#pragma once

#define DEFINE_CLASS(class_name) \
	static Animal* get##class_name() {		\
		return new class_name();				\
	}									\
static void create##class_name() {	\
			AnimalFactory* animalFactory = AnimalFactory::getAnimalFactory(); \
			animalFactory->resiger(class_name, class_name##Factory::get##class_name);\
		};\

#define REGIST_CLASS(class_name) \
    class_name##Factory::create##class_name();\

#define TEST(name)\
	void T(){printf("i am t\n")};\


#define MAPX 25
#define MAPY 50
#define SHEEPCOUNT 10
#define GRASSCOUNT 150
#define WOLFCOUNT 10
#define TAIGERCOUNT 10
#define RABBITCOUNT 10